require("./connect");
const {pagerHelper} = require('../PagerHelper');
const mongoose = require("mongoose");
// 创建集合(表)
const schema = new mongoose.Schema({
    id:Number,
    name: String,
    gender: String,
    phone: String,
    dorm: Number,
    dormroom: String
});
// const stuM =mongoose.Schema('stuM',schema);
const stuM =new mongoose.model('stu',schema,'stu');
// stuM.find((err,result) => {
//     console.log(result);
// })

/**
 * 同步函数，分页查询书本
 * @param {*} query 
 * @param {*} columns 
 */
async function findByPage(where,columns){
    let result = await stuM.find(where).select(columns).limit(pagerHelper.pageSize).skip((pagerHelper.pageNum - 1) * pagerHelper.pageSize);
    return result;
}

async function getCount(where) {
    let result = await stuM.count(where);
    return result;
}
/**
 * 根据id搜索
 * @param _id
 * @returns {Promise<*>}
 */
 async function findById(_id) {
    return await stuM.findById(_id);
}


/**
 * 根据ID删除数据
 * @param {*} _id 
 * @returns 
 */
async function deleteById(_id){
    return await stuM.findByIdAndDelete(_id);
}

/**
 * 插入数据到数据库中
 * @param obj
 * @returns {Promise<EnforceDocument<unknown, {}>[]>}
 */
 async function insert(obj) {
    return await stuM.create(obj);
}

/**
 * 编辑书本
 * @param obj
 * @param _id
 * @returns {Promise<*>}
 */
 async function update(obj, _id) {
    return await stuM.findByIdAndUpdate(_id, obj);
}

/**
 * 删除多个ids的数据
 * @param ids
 * @returns {Promise<*>}
 */
async function deleteByIds(ids) {
    if (Array.isArray(ids)) {
        return await stuM.deleteMany({_id: {$in: ids}});
    }
}
// function create(){
//     stuM.create({
//         id:1,
//         name:"小明",
//         gender:true,
//         phone:"12312312312",
//         dorm:412,
//         dormroom:"123"
//     },(err,docs)=>{
//         if(!err){
//             console.log('插入成功'+docs)
//         }
//     })
// }

// async function find(){
//     await create();
//     stuM.find((err,result) => {
//         console.log(result);
//     })
    
// }

// find();

module.exports={
    findByPage, findById, getCount, deleteById, deleteByIds, insert, update
}